package ru.niir.goodfil.ui;

import ru.niir.goodfil.db.Brand;
import ru.niir.goodfil.db.GoodType;

import java.util.ArrayList;
import java.util.List;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Страница каталога товара для клиентов.
 *
 * @author Носов А.В.
 */
public class ClientGoodsBean extends PageBean {
    /**
     * Возвращает список корневых груп товаров с их старшими потомками.
     */
    public List<GoodType> getGoodTypes() {
        List<Brand> brands = gf().getBrands();
        List<GoodType> result = new ArrayList<GoodType>();
        List<GoodType> goodTypes = gf().getGoodTypesByParentId(1);
        for (GoodType gt : goodTypes) {
            if (gt.isDeleted()) continue;
            if (gt.getId() == 1) continue;

            //  Показывать или нет данный брэнд
            if (!getSecurityBean().getIsAuthorized()) {
                boolean visible = false;
                for (Brand brand : brands) {
                    if (brand.getId() == gt.getBrandId() && brand.isActive())
                        visible = true;
                }
                if (!visible) continue;
            }
                if (getSecurityBean().getIsClient()) {
                    boolean visible = false;
                    for (Brand brand : brands) {
                        if (brand.getId() == gt.getBrandId() && brand.isActive())
                            visible = true;
                    }
                    if (getSecurityBean().getIsAuthorized() && getSecurityBean().getCurrentClient() != null) {
                        for (long visibleBrandId : getSecurityBean().getCurrentClient().getVisibleBrands()) {
                            if (visibleBrandId == gt.getBrandId())
                                visible = true;
                        }
                    }
                    if (!visible) continue;
                }
                if (getSecurityBean().getIsEmployee()) {   //  Показывать все группы
                }

                long id = gt.getId();
                List<GoodType> list = gf().getGoodTypesByParentId(id);
                gt.getChildren().clear();
                for (GoodType g : list) {
                if (g.isDeleted()) continue;
                gt.getChildren().add(g);
            }

            result.add(gt);
        }
        return result;
    }

//    public static boolean brandIsVisibleForClient(Goodfil gf, Client client, long brandId)
//    {
//        List<Brand> brands = gf.getBrands();
//    }
}
